﻿#ifndef __UI_H__
#define __UI_H__


#include "lcd.h"
#include "stdbool.h"


#define BACKCOLOR BLACK /* 默认背景色 */
#define FORECOLOR WHITE /* 默认前景色 */


/* 窗口类 */
typedef struct
{
    uint16_t x, y;          /*!< 窗口起始坐标 */
    uint16_t width, height; /*!< 窗口大小 */
    uint16_t colorBorder;   /*!< 边框颜色 */
    bool select;            /*!< 选中状态 */
}Window_t;

/* 文本视图类 */
typedef struct
{
    uint16_t x, y;  /*!< 起始坐标 相对于父窗口 */
    uint16_t size;  /*!< 大小 */
    uint16_t color; /*!< 颜色 */
    char *text;     /*!< 文本内容 */
}TextView_t;

/* 网格类 */
typedef struct
{
    Window_t parent;    /*!< 继承窗口类 */
    uint16_t sizeGrid;  /*!< 网格大小 */
    uint16_t colorGrid; /*!< 网格颜色 */
    struct
    {
        uint16_t value; /*!< 值 */
        uint16_t color; /*!< 指示块颜色 */
    }vpi, tli; /*!< 垂直位置指示/触发电平指示 */
    uint16_t sensiv; /*!< 垂直灵敏度 mV */
    uint16_t timeBase; /*!< 时基 ns */
} Oscill_t;

/* 上边栏类 */
typedef struct
{
    Window_t parent; /*!< 继承窗口类 */
}UpperSildebar_t;

/* 下边栏 */
typedef struct
{
    Window_t   parent;         /*!< 继承窗口类 */
    TextView_t verSensitivity; /*!< 垂直灵敏度 */
    TextView_t cplMode;        /*!< 耦合方式 */
    TextView_t timeBase;       /*!< 时基 */
    TextView_t trigMode;       /*!< 触发方式 */
    TextView_t trigEdege;      /*!< 触发沿 */
}LowerSildebar_t;

#define OSCILL_DATA_LEN 100
extern uint16_t oscillData[OSCILL_DATA_LEN];


void UI_DrawOscilloWindow(const Oscill_t *window);
void UI_DrawUpperSildebar(const UpperSildebar_t *upperSildebar);
void UI_DrawLowerSildebar(const LowerSildebar_t *lowerSildebar);


#endif // !__UI_H__

